1include <BOSL2/std.scad>
2
3thickness = 2; //mm
4
5payload_length = 5; //mm
6payload_hole_diameter = 4; //mm
7payload_hole_offset = [2.5,6]; //mm
8
9strap_width = 24; //mm
10strap_attachement_opening = 1.8;
11strap_attachement_opening_offset = 0.5;
12strap_attachement_thickness = 2;
13
14split_attachement = true;
15split_attachement_opening = 2;
16
17rounding_radius = 2.5; //mm
18opening_rounding_radius = 0.5;//mm
19
20resolution = 100;
21
22// Hidden
23strap_attachement_length=strap_attachement_opening+strap_attachement_thickness*2;
24strap_attachement_width = strap_width+2*strap_attachement_thickness;
25
26
27module payload(){
28difference(){
29 cuboid([payload_length,strap_attachement_width,thickness],anchor=BOTTOM+LEFT+FRONT);
30 translate([payload_hole_offset.x,payload_hole_offset.y,thickness/2]) zcyl(r=payload_hole_diameter/2,h=thickness,$fn=resolution);
31}
32}
33
34module strap_attachement(flip=false){
35difference(){
36if (flip){
37difference(){
38 cuboid([strap_attachement_length,strap_attachement_width,thickness],anchor=BOTTOM+LEFT+FRONT,edges=[RIGHT+FRONT,RIGHT+BACK],rounding=rounding_radius,$fn=resolution);
39 translate([strap_attachement_thickness-strap_attachement_opening_offset,strap_attachement_thickness,0]) prismoid(
40 size1=[strap_attachement_opening,strap_width], size2=[strap_attachement_opening,strap_width], h=thickness,anchor=BOTTOM+LEFT+FRONT, shift=[--strap_attachement_opening_offset,0],
41 rounding=opening_rounding_radius,$fn=resolution
42);
43 }
44} else{
45difference(){
46 cuboid([strap_attachement_length,strap_attachement_width,thickness],anchor=BOTTOM+LEFT+FRONT,edges=[LEFT+FRONT,LEFT+BACK],rounding=rounding_radius,$fn=resolution);
47 translate([strap_attachement_thickness+strap_attachement_opening_offset,strap_attachement_thickness,0]) prismoid(
48 size1=[strap_attachement_opening,strap_width], size2=[strap_attachement_opening,strap_width], h=thickness,anchor=BOTTOM+LEFT+FRONT, shift=[-strap_attachement_opening_offset,0],
49 rounding=opening_rounding_radius,$fn=resolution
50);
51 }
52}
53if (split_attachement){
54if (flip){
55translate([strap_attachement_length-strap_attachement_thickness-strap_attachement_opening_offset,strap_attachement_width/2-split_attachement_opening/2,0]) cuboid([strap_attachement_thickness+strap_attachement_opening_offset,split_attachement_opening,thickness],anchor=BOTTOM+LEFT+FRONT);
56} else{
57 translate([0,strap_attachement_width/2-split_attachement_opening/2,0]) cuboid([strap_attachement_thickness+strap_attachement_opening_offset,split_attachement_opening,thickness],anchor=BOTTOM+LEFT+FRONT);
58}
59}
60}
61}
62
63
64module body(){
65 strap_attachement(flip=false);
66 translate([strap_attachement_length,0,0]) payload();
67 translate([strap_attachement_length+payload_length,0,0])
68 strap_attachement(flip=true);
69}
70
71body();